As the use of digital data becomes more prominent in everyday life, the need for access to reliable data sources increases. For example, a user may need regular access to data that can be physically located across different buildings or even around the world. This is often the case with respect to large company projects that may involve many groups worldwide working on a same solution.
As these types of joint projects become more commonplace, so does the need for having access to such data in real-time. In other words, the data accessed by each remote site will need to be current whether that data is stored locally or halfway around the world. Accordingly, the users need to have access to the latest version of the data as soon as it is released into the system from any site.
In many current implementations utilizing transmission control protocol/Internet protocol (TCP/IP), file transfer protocol (FTP), and other similar facilities (e.g., RSYNC command provided in Unix systems) are utilized to maintain data amongst remote sites. These tools, however, are generally useful only for transferring files from one point to the next. Moreover, automation of these tools only results in synchronization among multiple sites when a batch update or a nightly synchronization is performed. Also, if one of the remote sites goes down or cannot accept external data, the data may be dropped and unavailable.
One of the biggest challenges for a distributed file system is the efficient utilization of the available network bandwidth. This can be key to an effective real-time file synchronization utility, especially in a large multi-user community sprawled across a country or even the globe. The RSYNC utility uses an internal computation for transferring only the change in data to a remote site. This internal computation, however, cannot be harnessed by a multi-site file system using, for example, a revision control system (RCS) at the backend. Also, the RSYNC utility computes the change on an entire file without regard for different versions of a same file.